<?php 

/**
 * Webqq机器人运行文件，使用时请监控此文件，频率为每分钟一次
 * @author 冬天的秘密
 * @link http://bbs.itpk.cn
 * @version 1.0
 */

/**
 * 是否检查用户的登录情况
 * @var boolean
 */
define('IS_CHECK_LOGIN', false);

/**
 * 加载主体文件
 */
require_once 'web-init.php';

/**
 * 获取传入的密钥
 */
$secret = DataUtil::param_mysql_filter("secret", false);

/**
 * 如果密钥为空则退出程序
 */
if (!$secret) ErrorUtil::put("缺少机器人监控密钥（监控密钥在机器人记录页面）");

/**
 * 实例化QQ机器人操作类（对数据库的操作）
 */
$qqPer = new WebqqPer();

/**
 * 根据密钥获取QQ机器人信息
 */
$qq = $qqPer->getMeBySecret($secret);

/**
 * 机器人不存在或密钥不正确则退出程序
 */
if (!$qq) ErrorUtil::put("机器人不存在、未开启或密钥不正确");

/**
 * 记录开始时间
 */
$start_time = time();

/**
 * 运行记录类
 */
$runlogPer = new WebrunlogPer();

/**
 * 群成员操作类
 */
$groupmemberPer = new WebgroupmemberPer();

/**
 * 验证码操作
 */
$verificationPer = new WebverificationPer();

/**
 * COOKIE操作类
 */
$cookiePer = new WebcookiePer();

/**
 * 插件操作类
 */
$pluginPer = new WebpluginPer();

/**
 * 机器人基本属性
 */
$uin = $qq['uin']; $pass = $qq['pass']; $rsa_pass = $qq['rsa_pass']; $status = $qq['status']; $verification = $qq['verification']; $pingd = $qq['pingd'];

/**
 * 获取最后一次正常运行记录的时间戳
 */
$last_time = $runlogPer->getLastTimeByMsg($uin, "last_time");

/**
 * 判断此次运行是不是多余的执行（容错时间为4秒）
 */
if (intval(time() - $last_time) < 56) ErrorUtil::put("此次运行为多余的执行，系统已经自动终止");

/**
 * 记录此次运行记录时间
 */
$runlogPer->insertMe($uin, "last_time");

$webRobot = new WebRobot( $uin, $qqPer, $runlogPer, $groupmemberPer, $verificationPer, $cookiePer, $pluginPer );

/**
 * 如果机器人不是正常在线则进行相关登录操作
 */
if ($status != StatusUtil::ONLINE) {

	if ($status == StatusUtil::INIT) {
		$status = $webRobot->checkVerify();
	}

	if ($status == StatusUtil::LOADING_RSA || $status == StatusUtil::LOADING_VERIFY) {
		$runlogPer->insertMe($qq['uin'], "请进行登录操作");
		$rsa_pass = "";
		while ($rsa_pass == "") {
			$qq = $qqPer->getMeBySecret($secret);
			$rsa_pass = $qq['rsa_pass'];
			sleep(2);
		}
		$status = StatusUtil::LOADING_LOGIN;
		$qqPer->updateProfileToInt($uin, "status", $status);
	}

	if ($status == StatusUtil::LOADING_LOGIN) {
		$status =  $webRobot->login($qq, $status);
	}
}

if ($status == StatusUtil::ONLINE) {
	$webRobot->run($start_time);
}

?>